Universal Serial Bus (USB) is a serial bus industry standard to interface electronic devices. USB permits many peripheral devices (e.g., secondary hardware devices such as a mouse, keyboard, or modem) to be connected to a host, such as a computer, using a single standardized interface socket.
A single USB port can be used to connect up to 127 peripheral devices. USB supports various features such as Plug-And-Play, hot swapping, providing power to low-consumption devices without the need for an external power supply, allowing many devices to be used without requiring manufacturer specific, individual device drivers to be installed, USB hubs that increase the number of USB ports, USB On-The-Go, and wireless USB.
USB On-The-Go allows a single port on a unit to react as either a host or a peripheral device. Typically, this is selected by checking which end of the USB cable is plugged into the socket on the unit. The two units may even “swap” ends under program control, even after the cable is hooked up and the units are talking. USB On-The-Go is designed for products like personal digital assistants (PDA's) where the USB link might sometimes connect to a computer's host port as a device, and other times connect as a host itself to another peripheral device, such as a mouse and keyboard.
Wireless USB is an application designed to extend the usability of USB, which permits backwards compatibility with USB 1.1 and USB 2.0 on the protocol level. Wireless USB utilizes ultra wideband wireless technology for data transmissions rates up to 480 Mbps. Wireless USB is well suited for wireless connection of certain portable electronic devices allowing transfer of data to occur, without the use of a cable.
After an idle time period of no communications between a USB host and a USB device, the USB host suspends the USB and enters a low power or deep sleep mode to minimize current drain and conserve power. A USB device, which is connected to a USB host that entered a low power mode and would like to again communicate with the USB host, first needs to wake up the USB host. Waking up the USB host is performed by the USB device initiating a remote wakeup process on the USB.
The USB host takes a time period to wake up before providing a communication to the USB device in response to performing the remote wake up process. The wake up time period for some USB host may be greater than one millisecond (i.e. 1 msec.) and for mobile side modems (MSMs) for example may be in the range of seven (7) milliseconds (i.e. 7 msec.). When the USB device has a shorter wait time than the wake up time of the USB host may otherwise be called a race condition. In the race condition the USB host races to wake up the USB device before the USB device enters sleep mode after the wait time period lapses.
The USB device enters into sleep mode in response to not receiving a communication reply from the USB host within the wait time period (e.g. 1 msec.) after initiating the remote wakeup procedure on the USB.
A USB host taking more than 1 msec. to wake up may present a problem for USB devices since USB devices may only wait about 1 msec. to receive and detect a communication response back from the USB host before entering into sleep mode. In such cases the USB device will give up waiting for a communication reply and conclude that the remote wake up process by the USB host failed. In other words by the time the USB host wakes up, the USB device is back to sleep and the USB host does not know why the USB device tried to wake it up.
In some cases a user pressing a key on a USB device employed as a keyboard for example to wake up the USB host will not be able to wake up the ho USB host. This may cause the use to become frustrated with the USB system or think that some part of the USB system is not functioning properly.
In other cases a user may continue to press a key or press one or more keys multiple times for example thereby continuously resetting the wait time period for the USB device beyond the wake up time period for the USB host and preventing the USB device from entering sleep mode and permitting the USB host to wake up. Requiring such continuous or repetitive manual actions by the user of the USB device may be considered onerous or frustrating to the user of the USB device and also may cause the user of the USB device to think that some part of the USB system is not functioning properly.
A USB hardware solution to the wake up problem presently exists that detects received remote wakeup, and keeps the USB active until the USB host wakes up. The USB hardware solution increases hardware circuitry, which increases hardware cost, current drain (i.e., power consumption), size, etc., for the USB host and/or USB device because the hardware circuitry needs to be active even when the USB host is in a low power mode.
Accordingly, there is a need for a USB device remotely waking up a USB host over a USB, without the associated disadvantages of the hardware circuitry.